package jp.chiheisen.common.dialog;

import javax.swing.JOptionPane;
import javax.swing.UIManager;

/**
 * プログラムで共通のダイアログを提供するクラスです。
 * 
 * @author YujiYamamoto
 * @since 1.0
 */
public class Dialog {
	/** タイトル */
	private final String title;
	
	/**
	 * プログラムで使用するダイアログを構築します。
	 * 
	 * @param title タイトル(null可、その場合は空文字になる) 
	 */
	public Dialog(String title){
		this.title = title;

		// 可能なら、システムデフォルトの Look&Feel に変更
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
		}
	}
	
	/**
	 * インプットダイアログを表示し、ユーザに値の入力を求めます。
	 * 
	 * @param message ダイアログに表示するメッセージ
	 * @param retryMessage バリデートエラーの際に表示するメッセージ
	 * @param validator バリデータ
	 * @return ユーザが入力した値 (入力を取り消した場合は null)
	 */
	public String input(String message, String retryMessage, Validator validator){
		String input = JOptionPane.showInputDialog(null, message, title, JOptionPane.QUESTION_MESSAGE);
		
		while(input != null && !validator.isValid(input)){
			input = JOptionPane.showInputDialog(null, retryMessage, title, JOptionPane.QUESTION_MESSAGE);
		}
		
		return input;
	}

}
